package com.hspedu.innerclass;

public class AnonymouslnnerClass {
    public static void main(String[] args) {
        Ouer ouer = new Ouer();
        ouer.method02();
    }
    
}

class Ouer{
    private int n1 = 10;
    public void method01()
    {
        //编译类型是IA（看等号左边）
        //运行类型是匿名内部类
        /*
        * 底层
        * class Ouer$1 implemens iA{
        *       ...
        * }
        * 然后立即创建了Ouer$1实例，并且返回了地址
        * 匿名内部类只能使用一次，但是ia这个对象可以一直使用
        * */
        IA ia = new IA() {
            @Override
            public void cry() {
                System.out.println("老虎叫唤");
            }
        };
        ia.cry();
        System.out.println("运行类型=" + ia.getClass());
    }
    public void method02()
    {
        @SuppressWarnings({"all"})
        //正常的new一个对象
        Father jack = new Father("jack");
        //匿名内部类
        Father father = new Father("kcaj") {

        };
    }
}

interface IA{
    public void cry();
}

class Father{
    String name;
    public Father(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}